﻿<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory">Chapter 12. EPL Reference: Date-Time Methods</title>
<link rel="stylesheet" href="css/espertech.css" type="text/css">
	<meta xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" name="generator" content="DocBook XSL-NS Stylesheets V1.74.0">
		<meta xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" http-equiv="Content-Type" content="text/html; charset=UTF-8">
			<link rel="home" href="index.html" title="Esper Reference">
				<link rel="up" href="index.html" title="Esper Reference">
					<link rel="prev" href="enumerationreference.html" title="Chapter 11. EPL Reference: Enumeration Methods">
						<link rel="next" href="aggmethodreference.html" title="Chapter 13. EPL Reference: Aggregation Methods">
</head>

<body>
	<p xmlns:d="http://docbook.org/ns/docbook" id="title">
		<a href="./index.html" class="site_href"><strong>www.espertech.com</strong></a><a href="http://www.espertech.com/esper/esper-documentation/" class="doc_href"><strong>Documentation</strong></a>
	</p>
	<ul xmlns:d="http://docbook.org/ns/docbook" class="docnav">
		<li class="previous"><a accesskey="p" href="enumerationreference.html"><strong>Prev</strong></a></li>
		<li class="next"><a accesskey="n" href="aggmethodreference.html"><strong>Next</strong></a></li>
	</ul>
	<div class="chapter" lang="en-US">
		<div class="titlepage">
			<div>
				<div>
					<h2 class="title"><a id="datetimereference"></a>第12章. EPL参考：日期时间方法</h2>
				</div>
			</div>
		</div>
		<div class="toc">
			<dl>
				<dt><a href="datetimereference.html#datetime-intro">12.1. 概述</a></dt>
				<dt><a href="datetimereference.html#datetime-howtouse">12.2. 使用方法</a></dt>
				<dd>
					<dl>
						<dt><a href="datetimereference.html#datetime-howtouse-synopsis">12.2.1. 语法</a></dt>
					</dl>
				</dd>
				<dt><a href="datetimereference.html#datetime-method-calref">12.3. 日历和格式化参考</a></dt>
				<dd>
					<dl>
						<dt><a href="datetimereference.html#datetime-method-between">12.3.1. Between</a></dt>
						<dt><a href="datetimereference.html#datetime-method-format">12.3.2. Format</a></dt>
						<dt><a href="datetimereference.html#datetime-method-get">12.3.3. Get (By Field)</a></dt>
						<dt><a href="datetimereference.html#datetime-method-getitem">12.3.4. Get (By Name) </a></dt>
						<dt><a href="datetimereference.html#datetime-method-minus">12.3.5. Minus</a></dt>
						<dt><a href="datetimereference.html#datetime-method-plus">12.3.6. Plus</a></dt>
						<dt><a href="datetimereference.html#datetime-method-roundceiling">12.3.7. RoundCeiling</a></dt>
						<dt><a href="datetimereference.html#datetime-method-roundfloor">12.3.8. RoundFloor</a></dt>
						<dt><a href="datetimereference.html#datetime-method-roundhalf">12.3.9. RoundHalf</a></dt>
						<dt><a href="datetimereference.html#datetime-method-set">12.3.10. Set (By Field)</a></dt>
						<dt><a href="datetimereference.html#datetime-method-withdate">12.3.11. WithDate</a></dt>
						<dt><a href="datetimereference.html#datetime-method-withmin">12.3.12. WithMax</a></dt>
						<dt><a href="datetimereference.html#datetime-method-withmax">12.3.13. WithMin</a></dt>
						<dt><a href="datetimereference.html#datetime-method-withtime">12.3.14. WithTime</a></dt>
						<dt><a href="datetimereference.html#datetime-method-tocal">12.3.15. ToCalendar</a></dt>
						<dt><a href="datetimereference.html#datetime-method-todate">12.3.16. ToDate</a></dt>
						<dt><a href="datetimereference.html#datetime-method-tomsec">12.3.17. ToMillisec</a></dt>
					</dl>
				</dd>
				<dt><a href="datetimereference.html#datetime-method-intervalref">12.4. 区间代数参考</a></dt>
				<dd>
					<dl>
						<dt><a href="datetimereference.html#datetime-method-examples">12.4.1. 示例</a></dt>
						<dt><a href="datetimereference.html#datetime-method-parameters">12.4.2. 区间代数参数</a></dt>
						<dt><a href="datetimereference.html#datetime-method-performance">12.4.3. 性能</a></dt>
						<dt><a href="datetimereference.html#datetime-method-limitations">12.4.4. 限制</a></dt>
						<dt><a href="datetimereference.html#datetime-method-after">12.4.5. After</a></dt>
						<dt><a href="datetimereference.html#datetime-method-before">12.4.6. Before</a></dt>
						<dt><a href="datetimereference.html#datetime-method-coincides">12.4.7. Coincides</a></dt>
						<dt><a href="datetimereference.html#datetime-method-during">12.4.8. During</a></dt>
						<dt><a href="datetimereference.html#datetime-method-finishes">12.4.9. Finishes</a></dt>
						<dt><a href="datetimereference.html#datetime-method-finishedby">12.4.10. Finished By</a></dt>
						<dt><a href="datetimereference.html#datetime-method-includes">12.4.11. Includes</a></dt>
						<dt><a href="datetimereference.html#datetime-method-meets">12.4.12. Meets</a></dt>
						<dt><a href="datetimereference.html#datetime-method-metby">12.4.13. Met By</a></dt>
						<dt><a href="datetimereference.html#datetime-method-overlaps">12.4.14. Overlaps</a></dt>
						<dt><a href="datetimereference.html#datetime-method-overlappedby">12.4.15. Overlapped By</a></dt>
						<dt><a href="datetimereference.html#datetime-method-starts">12.4.16. Starts</a></dt>
						<dt><a href="datetimereference.html#datetime-method-startedby">12.4.17. Started By</a></dt>
					</dl>
				</dd>
			</dl>
		</div>
		<div class="sect1" lang="en-US">
			<div class="titlepage">
				<div>
					<div>
						<h2 class="title"><a id="datetime-intro"></a>12.1. 概述</h2>
					</div>
				</div>
			</div>
			<a id="d0e33819" class="indexterm"></a>
			<p>EPL日期时间方法用于处理日期时间值，执行常见任务如比较时间和时间段、添加或减去时间段、设置或舍入日历字段以及查询字段。</p>
			<p>日期时间方法可操作以下内容：</p>
			<div xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="orderedlist">
				<ol>
					<li>
						<p>返回以下任一值的表达式或事件属性：</p>
						<div class="orderedlist">
							<ol>
								<li>
									<p>长整型的毫秒或微秒值</p>
								</li>
								<li>
									<p>
										<code class="literal">java.util.Calendar</code>对象及其子类
									</p>
								</li>
								<li>
									<p>
										<code class="literal">java.util.Date</code>对象及其子类
									</p>
								</li>
								<li>
									<p>
										<code class="literal">java.time.LocalDateTime</code>对象及其子类
									</p>
								</li>
								<li>
									<p>
										<code class="literal">java.time.ZonedDateTime</code>对象及其子类
									</p>
								</li>
							</ol>
						</div>
					</li>
					<li>
						<p>
							任何声明了开始时间戳属性名和可选结束时间戳属性名的事件类型。日期时间方法通过<span class="emphasis"><em>流别名</em></span>.<span class="emphasis"><em>方法名</em></span>语法对事件进行操作。
						</p>
					</li>
				</ol>
			</div>
			<p>
				您的应用程序可以通过遵循<a class="xref" href="extension.html#custom-datetimemethod" title="22.8. 日期时间方法">第22.8节"日期时间方法"</a>中描述的方案来添加额外的日期时间方法。
			</p>
			<p>下表总结了可用的内置日期时间方法：</p>
			<div class="table">
				<a id="datetime_method_table"></a>
				<p class="title">
					<b>表12.1. 日期时间方法</b>
				</p>
				<div class="table-contents">
					<table summary="日期时间方法" border="1">
						<colgroup>
							<col>
								<col>
						</colgroup>
						<thead>
							<tr>
								<th>方法</th>
								<th>结果</th>
							</tr>
						</thead>
						<tbody>
							<tr>
								<td>after(事件或时间戳)</td>
								<td>
									<p>如果一个事件发生在另一个事件之后，或一个时间戳在另一个时间戳之后，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-after" title="12.4.5. After">第12.4.5节"After"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>before(事件或时间戳)</td>
								<td>
									<p>如果一个事件发生在另一个事件之前，或一个时间戳在另一个时间戳之前，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-before" title="12.4.6. Before">第12.4.6节"Before"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>between(时间戳, 时间戳, 布尔值, 布尔值)</td>
								<td>
									<p>如果一个时间戳在两个时间戳之间，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-between" title="12.3.1. Between">第12.3.1节"Between"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>coincides(事件或时间戳)</td>
								<td>
									<p>如果一个事件和另一个事件同时发生，或两个时间戳值相同，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-coincides" title="12.4.7. Coincides">第12.4.7节"Coincides"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>during(事件或时间戳)</td>
								<td>
									<p>如果一个事件发生在另一个事件发生期间，或一个时间戳落在某个事件发生期间内，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-during" title="12.4.8. During">第12.4.8节"During"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>finishes(事件或时间戳)</td>
								<td>
									<p>如果一个事件在另一个事件开始后开始，并且该事件与另一个事件同时结束，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-finishes" title="12.4.9. Finishes">第12.4.9节"Finishes"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>finishedBy(事件或时间戳)</td>
								<td>
									<p>如果一个事件在另一个事件开始前开始，并且与另一个事件同时结束，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-finishedby" title="12.4.10. Finished By">第12.4.10节"Finished By"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>
									<p>format()</p>
									<p>format(格式)</p>
								</td>
								<td>
									<p>格式化日期时间并返回字符串。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-format" title="12.3.2. Format">第12.3.2节"Format"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>get(字段)</td>
								<td>
									<p>返回给定日期时间值字段的值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-get" title="12.3.3. Get (By Field)">第12.3.3节"Get (按字段)"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>
									<p>getMillisOfSecond()</p>
									<p>getSecondOfMinute()</p>
									<p>getMinuteOfHour()</p>
									<p>getHourOfDay()</p>
									<p>getDayOfWeek()</p>
									<p>getDayOfMonth()</p>
									<p>getDayOfYear()</p>
									<p>getWeekyear()</p>
									<p>getMonthOfYear()</p>
									<p>getYear()</p>
									<p>getEra()</p>
								</td>
								<td>
									<p>返回给定日期时间值字段的值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-getitem" title="12.3.4. Get (By Name)">第12.3.4节"Get (按名称)"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>includes(事件或时间戳)</td>
								<td>
									<p>如果参数事件发生在该事件发生期间内，或一个时间戳落在某个事件发生期间内，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-includes" title="12.4.11. Includes">第12.4.11节"Includes"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>meets(事件或时间戳)</td>
								<td>
									<p>如果事件的结束时间与另一个事件的开始时间相同，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-meets" title="12.4.12. Meets">第12.4.12节"Meets"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>metBy(事件或时间戳)</td>
								<td>
									<p>如果事件的开始时间与另一个事件的结束时间相同，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-metby" title="12.4.13. Met By">第12.4.13节"Met By"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>minus(持续时间-毫秒)</td>
								<td>
									<p>返回减去指定毫秒时长后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-minus" title="12.3.5. Minus">第12.3.5节"Minus"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>minus(时间段)</td>
								<td>
									<p>返回减去指定时间段语法时长后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-minus" title="12.3.5. Minus">第12.3.5节"Minus"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>overlaps(事件或时间戳)</td>
								<td>
									<p>如果事件在另一个事件开始前开始，并在另一个事件开始后结束但在另一个事件结束前完成(事件有重叠时间段)，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-overlaps" title="12.4.14. Overlaps">第12.4.14节"Overlaps"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>overlappedBy(事件或时间戳)</td>
								<td>
									<p>如果参数事件在输入事件开始前开始，并且参数事件在输入事件开始后结束但在输入事件结束前完成(事件有重叠时间段)，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-overlappedby" title="12.4.15. Overlapped By">第12.4.15节"Overlapped By"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>plus(持续时间-毫秒)</td>
								<td>
									<p>返回加上指定毫秒时长后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-plus" title="12.3.6. Plus">第12.3.6节"Plus"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>plus(时间段)</td>
								<td>
									<p>返回加上指定时间段语法时长后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-plus" title="12.3.6. Plus">第12.3.6节"Plus"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>roundCeiling(字段)</td>
								<td>
									<p>返回将日期时间舍入到该日期时间字段的最高整数单位后的值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-roundceiling" title="12.3.7. RoundCeiling">第12.3.7节"RoundCeiling"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>roundFloor(字段)</td>
								<td>
									<p>返回将日期时间舍入到该日期时间字段的最低整数单位后的值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-roundfloor" title="12.3.8. RoundFloor">第12.3.8节"RoundFloor"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>roundHalf(字段)</td>
								<td>
									<p>返回将日期时间舍入到最接近该日期时间字段的整数单位后的值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-roundhalf" title="12.3.9. RoundHalf">第12.3.9节"RoundHalf"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>set(字段, 值)</td>
								<td>
									<p>返回将指定字段设置为值表达式返回值后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-set" title="12.3.10. Set (By Field)">第12.3.10节"Set (按字段)"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>starts(事件或时间戳)</td>
								<td>
									<p>如果一个事件和另一个事件同时开始，并且该事件的结束发生在另一个事件结束之前，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-starts" title="12.4.16. Starts">第12.4.16节"Starts"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>startedBy(事件或时间戳)</td>
								<td>
									<p>如果一个事件和另一个事件同时开始，并且另一个事件的结束发生在输入事件结束之前，则返回true。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-startedby" title="12.4.17. Started By">第12.4.17节"Started By"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>withDate(年,月,日)</td>
								<td>
									<p>返回指定日期后的日期时间，保留时间字段。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-withdate" title="12.3.11. WithDate">第12.3.11节"WithDate"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>withMax(字段)</td>
								<td>
									<p>返回将该字段设置为最大值后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-withmin" title="12.3.12. WithMax">第12.3.12节"WithMax"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>withMin(字段)</td>
								<td>
									<p>返回将该字段设置为最小值后的日期时间。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-withmax" title="12.3.13. WithMin">第12.3.13节"WithMin"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>withTime(时,分,秒,毫秒)</td>
								<td>
									<p>返回指定时间后的日期时间，保留日期字段。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-withtime" title="12.3.14. WithTime">第12.3.14节"WithTime"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>toCalendar()</td>
								<td>
									<p>
										返回该日期时间值的<code class="literal">Calendar</code>对象。
									</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-tocal" title="12.3.15. ToCalendar">第12.3.15节"ToCalendar"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>toDate()</td>
								<td>
									<p>
										返回该日期时间值的<code class="literal">Date</code>对象。
									</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-todate" title="12.3.16. ToDate">第12.3.16节"ToDate"</a>。
									</p>
								</td>
							</tr>
							<tr>
								<td>toMillisec()</td>
								<td>
									<p>返回该日期时间值的长整型毫秒值。</p>
									<p>
										<a class="xref" href="datetimereference.html#datetime-method-tomsec" title="12.3.17. ToMillisec">第12.3.17节"ToMillisec"</a>。
									</p>
								</td>
							</tr>
						</tbody>
					</table>
				</div>
			</div>
			<br class="table-break">
		</div>
		<div class="sect1" lang="zh-CN">
			<div class="titlepage">
				<div>
					<div>
						<h2 class="title"><a id="datetime-howtouse"></a>12.2. 使用方法</h2>
					</div>
				</div>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-howtouse-synopsis"></a>12.2.1. 语法</h3>
						</div>
					</div>
				</div>
				<p>日期时间方法的语法与任何链式调用语法相同：</p>
				<pre class="synopsis">
					<span class="emphasis"><em>输入值</em></span>.<span class="emphasis"><em>日期时间方法名</em></span>([<span class="emphasis"><em>方法参数</em></span> [, <span class="emphasis"><em>方法参数</em></span> [,...]]])
	  .[ <span class="emphasis"><em>日期时间方法名</em></span>(...) [...]] </pre>
				<p>
					在<span class="emphasis"><em>输入值</em></span>之后是<code class="literal">.</code>(点)运算符和<span class="emphasis"><em>日期时间方法名</em></span>。括号内是以逗号分隔的方法参数表达式列表。之后可以链接其他日期时间方法。
				</p>
				<p>
					输入值可以是返回long类型、<code class="literal">java.util.Calendar</code>、<code class="literal">java.util.Date</code>、<code class="literal">java.time.LocalDateTime</code>或<code class="literal">java.time.ZonedDateTime</code>值的任何表达式或事件属性。如果输入值为null，表达式结果也为null。
				</p>
				<p>输入值也可以是事件。这种情况下，事件的事件类型必须定义了开始时间戳属性名，并可选择定义结束时间戳属性名。</p>
				<p>
					以下示例语句使用<code class="literal">withTime</code>日期时间方法。此示例返回当前运行时时间，时间部分设置为凌晨1点：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select current_timestamp.withTime(1, 0, 0, 0) as time1am from MyEvent</pre>
				<p>由于日期时间方法可以链式调用，以下EPL等效：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select current_timestamp.set('hour', 1).set('min', 0).set('sec', 0).set('msec', 0) as time1am
from MyEvent</pre>
				<p>
					上面的语句在字段<code class="literal">time1am</code>中输出一个长整型值(毫秒或微秒)，反映与运行时时间相同日期的凌晨1点。由于输入值由返回当前运行时时间作为长整型值的内置<code class="literal">current_timestamp</code>函数提供，输出也是长整型值。
				</p>
				<p>您可以将日期时间方法应用于事件属性。</p>
				<p>
					假设<code class="literal">RFIDEvent</code>事件类型有一个名为<code class="literal">timeTaken</code>的<code class="literal">Date</code>类型属性。以下语句将每个time-taken值向下舍入到最接近的分钟，并在列<code class="literal">timeTakenRounded</code>中输出<code class="literal">Date</code>类型值：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.roundFloor('min') as timeTakenRounded from RFIDEvent</pre>
				<p>您可以将日期时间方法应用于事件。此示例假设RFIDEvent和WifiEvent事件类型都定义了时间戳属性。EPL比较RFIDEvent和WifiEvent的时间戳：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select rfid.after(wifi) as isAfter 
from RFIDEvent#lastevent rfid, WifiEvent#lastevent wifi</pre>
				<p>
					为了比较日期时间值并考虑事件持续时间(事件开始和结束时间戳)，我们推荐使用任何区间代数方法。您也可以使用<code class="literal">between</code>或<code class="literal">in</code>范围及反转范围或关系运算符(<code class="literal">&gt; , &lt;, &gt;=, &lt;=)</code>)比较长整型值。
				</p>
				<p>从性能角度看，日期时间方法评估确保对于每个唯一的日期时间方法链，仅在必要时复制或创建单个日历对象。</p>
			</div>
		</div>
		<div class="sect1" lang="zh-CN">
			<div class="titlepage">
				<div>
					<div>
						<h2 class="title"><a id="datetime-method-calref"></a>12.3. 日历和格式化参考</h2>
					</div>
				</div>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-between"></a>12.3.1. Between</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">between</code>日期时间方法将输入日期时间值与传入的两个日期时间值进行比较，如果输入值落在两个参数值之间则返回true。
				</p>
				<p>语法如下：</p>
				<pre class="synopsis">
					<span class="emphasis"><em>输入值</em></span>.<span class="emphasis"><em>between</em></span>(<span class="emphasis"><em>范围开始</em></span>, <span class="emphasis"><em>范围结束</em></span> [, <span class="emphasis"><em>包含开始</em></span>, <span class="emphasis"><em>包含结束</em></span>])</pre>
				<p>
					该方法接受2或4个参数。前两个参数<span class="emphasis"><em>范围开始</em></span>和<span class="emphasis"><em>范围结束</em></span>是表达式或属性，产生长整型、Date类型或Calendar类型的范围开始和结束值。
				</p>
				<p>
					接下来的两个参数<span class="emphasis"><em>包含开始</em></span>和<span class="emphasis"><em>包含结束</em></span>是可选的。如果未指定，范围开始值和范围结束值都包含在范围内，即指定一个包含两个端点的闭区间。如果指定，表达式必须返回一个布尔值，指示是否在范围内包含范围开始值和范围结束值。
				</p>
				<p>以下示例在RFID事件的time-taken属性值落在time-start属性值和time-end属性值之间时输出true(闭区间包含端点)：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.between(timeStart, timeEnd) from RFIDEvent</pre>
				<p>以下示例执行与上述相同的测试但不包含端点(开区间不包含任何端点)：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.between(timeStart, timeEnd, false, false) from RFIDEvent</pre>
				<p>如果范围结束值小于范围开始值，算法会反转范围开始和结束值。</p>
				<p>如果输入日期时间值或任何参数值评估为null，该方法返回null结果值。</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-format"></a>12.3.2. Format</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">format</code>日期时间方法格式化日期时间并返回字符串。
				</p>
				<p>该方法不接受参数或接受单个格式参数。</p>
				<div class="sect3" lang="zh-CN">
					<div class="titlepage">
						<div>
							<div>
								<h4 class="title"><a id="datetime-method-format-default"></a>12.3.2.1. 使用默认格式化器格式化</h4>
							</div>
						</div>
					</div>
					<p>当不传递参数时，该方法使用默认格式化器格式化日期时间值，如下所示：</p>
					<div class="table">
						<a id="datetime-method-format-table"></a>
						<p class="title">
							<b>表12.2. RoundHalf示例</b>
						</p>
						<div class="table-contents">
							<table summary="RoundHalf示例" border="1">
								<colgroup>
									<col>
										<col>
								</colgroup>
								<thead>
									<tr>
										<th>输入</th>
										<th>字符串格式化器</th>
									</tr>
								</thead>
								<tbody>
									<tr>
										<td><code class="literal">long, Date, Calendar</code></td>
										<td><code class="literal">new SimpleDateFormat()</code></td>
									</tr>
									<tr>
										<td><code class="literal">java.time.LocalTimeDate</code></td>
										<td><code class="literal">DateTimeFormatter.ISO_DATE_TIME</code></td>
									</tr>
									<tr>
										<td><code class="literal">java.time.ZonedTimeDate</code></td>
										<td><code class="literal">DateTimeFormatter.ISO_ZONED_DATE_TIME</code></td>
									</tr>
								</tbody>
							</table>
						</div>
					</div>
					<br class="table-break">
						<p>以下示例输出RFID事件的time-taken属性值：</p> <pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.format() as timeTakenStr from RFIDEvent</pre>
				</div>
				<div class="sect3" lang="zh-CN">
					<div class="titlepage">
						<div>
							<div>
								<h4 class="title"><a id="datetime-method-format-provided"></a>12.3.2.2. 提供格式</h4>
							</div>
						</div>
					</div>
					<p>
						对于<code class="literal">long</code>类型、<code class="literal">Date</code>类型或<code class="literal">Calendar</code>类型的输入值，您必须提供返回以下之一的表达式：
					</p>
					<div class="itemizedlist">
						<ul>
							<li>
								<p>
									符合<code class="literal">SimpleDateFormat</code>规则的<code class="literal">String</code>类型格式
								</p>
							</li>
							<li>
								<p>
									<code class="literal">DateFormat</code>实例
								</p>
							</li>
						</ul>
					</div>
					<p>
						对于<code class="literal">LocalDateTime</code>类型或<code class="literal">ZonedDateTime</code>类型的输入值，您必须提供返回以下之一的表达式：
					</p>
					<div class="itemizedlist">
						<ul>
							<li>
								<p>
									符合<code class="literal">DateTimeFormatter</code>规则的<code class="literal">String</code>类型格式
								</p>
							</li>
							<li>
								<p>
									<code class="literal">DateTimeFormatter</code>实例
								</p>
							</li>
						</ul>
					</div>
					<p>运行时在语句编译时评估格式表达式，因此格式表达式必须返回不基于时间或事件计算的值。</p>
					<p>例如：</p>
					<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.format('yyyy.MM.dd G 'at' HH:mm:ss') from RFIDEvent</pre>
					<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.format(SimpleDateFormat.getDateInstance()) from RFIDEvent</pre>
					<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select localDateTime.format(java.time.format.DateTimeFormatter.BASIC_ISO_DATE) from RFIDEvent</pre>
				</div>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-get"></a>12.3.3. Get (按字段)</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">get</code>日期时间方法返回给定日期时间值字段的值。
				</p>
				<p>
					该方法接受单个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>
					该方法返回日期时间值中字段的数值。返回值遵循<code class="literal">Calendar</code>类语义：例如，<code class="literal">month</code>的值从零开始，最大为11(注意：对于<code class="literal">LocalDateTime</code>和<code class="literal">ZonedDateTime</code>，月份的范围是1到12)。
				</p>
				<p>以下示例输出RFID事件的time-taken属性值的月份值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.get('month') as timeTakenMonth from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-getitem"></a>12.3.4. Get (按名称)</h3>
						</div>
					</div>
				</div>
				<p>
					以下getter方法可用：<code class="literal">getMillisOfSecond()</code>、<code class="literal">getSecondOfMinute()</code>、<code class="literal">getMinuteOfHour()</code>、<code class="literal">getHourOfDay()</code>、<code class="literal">getDayOfWeek()</code>、<code class="literal">getDayOfMonth()</code>、<code class="literal">getDayOfYear()</code>、<code class="literal">getWeekYear()</code>、<code class="literal">getMonthOfYear()</code>、<code class="literal">getYear()</code>和<code class="literal">getEra()</code>。
				</p>
				<p>
					所有get方法不接受参数，并返回日期时间值中字段的数值。返回值遵循<code class="literal">Calendar</code>类语义：例如，<code class="literal">month</code>的值从零开始，最大为11(注意：对于<code class="literal">LocalDateTime</code>和<code class="literal">ZonedDateTime</code>，月份的范围是1到12)。
				</p>
				<p>以下示例输出RFID事件的time-taken属性值的月份值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.getMonthOfYear() as timeTakenMonth from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-minus"></a>12.3.5. Minus</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">minus</code>日期时间方法返回减去指定持续时间后的日期时间。
				</p>
				<p>
					该方法有两个版本：第一个版本将持续时间作为长整型毫秒值。第二个版本将持续时间作为时间段表达式，参见<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>。
				</p>
				<p>以下示例演示了时间段参数，从RFID事件的time-taken属性值中减去两分钟：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.minus(2 minutes) as timeTakenMinus2Min from RFIDEvent</pre>
				<p>下一个示例等效，但传递的是毫秒值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.minus(2 * 60 * 1000) as timeTakenMinus2Min from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-plus"></a>12.3.6. Plus</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">plus</code>日期时间方法返回加上指定持续时间后的日期时间。
				</p>
				<p>
					该方法有两个版本：第一个版本将持续时间作为长整型毫秒值。第二个版本将持续时间作为时间段表达式，参见<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>。
				</p>
				<p>下一个示例向RFID事件的time-taken属性值添加两分钟：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.plus(2 minutes) as timeTakenPlus2Min from RFIDEvent</pre>
				<p>下一个示例等效，但传递的是毫秒值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.plus(2 * 60 * 1000) as timeTakenPlus2Min from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-roundceiling"></a>12.3.7. RoundCeiling</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">roundCeiling</code>日期时间方法将日期时间舍入到日期时间字段的最高整数单位。
				</p>
				<p>
					该方法接受单个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>下一个示例将RFID事件的time-taken属性值的分钟向上舍入：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.roundCeiling('min') as timeTakenRounded from RFIDEvent</pre>
				<p>
					如果输入时间为<code class="literal">2002-05-30 09:01:23.050</code>，例如，输出为<code class="literal">2002-05-30 09:02:00.000</code>(示例时间戳格式为<code class="literal">yyyy-MM-dd HH:mm:ss.SSS</code>)。
				</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-roundfloor"></a>12.3.8. RoundFloor</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">roundFloor</code>日期时间方法将日期时间舍入到日期时间字段的最低整数单位。
				</p>
				<p>
					该方法接受单个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>下一个示例将RFID事件的time-taken属性值的分钟向下舍入：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.roundFloor('min') as timeTakenRounded from RFIDEvent</pre>
				<p>
					如果输入时间为<code class="literal">2002-05-30 09:01:23.050</code>，例如，输出为<code class="literal">2002-05-30 09:01:00.000</code>(示例时间戳格式为<code class="literal">yyyy-MM-dd HH:mm:ss.SSS</code>)。
				</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-roundhalf"></a>12.3.9. RoundHalf</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">roundFloor</code>日期时间方法将日期时间舍入到最接近日期时间字段的整数单位。
				</p>
				<p>
					该方法接受单个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>下一个示例将RFID事件的time-taken属性值的分钟舍入：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.roundHalf('min') as timeTakenRounded from RFIDEvent</pre>
				<p>
					下表提供了一些舍入示例(示例时间戳格式为<code class="literal">yyyy-MM-dd HH:mm:ss.SSS</code>)：
				</p>
				<div class="table">
					<a id="datetime_roundhalf"></a>
					<p class="title">
						<b>表12.3. RoundHalf示例</b>
					</p>
					<div class="table-contents">
						<table summary="RoundHalf示例" border="1">
							<colgroup>
								<col>
									<col>
							</colgroup>
							<thead>
								<tr>
									<th>输入</th>
									<th>输出</th>
								</tr>
							</thead>
							<tbody>
								<tr>
									<td>2002-05-30 09:01:23.050</td>
									<td>2002-05-30 09:01:00.000</td>
								</tr>
								<tr>
									<td>2002-05-30 09:01:29.999</td>
									<td>2002-05-30 09:01:00.000</td>
								</tr>
								<tr>
									<td>2002-05-30 09:01:30.000</td>
									<td>2002-05-30 09:02:00.000</td>
								</tr>
							</tbody>
						</table>
					</div>
				</div>
				<br class="table-break">
					<p>
						此方法不支持<code class="literal">LocalDateTime</code>和<code class="literal">ZonedDateTime</code>输入值。
					</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-set"></a>12.3.10. Set (按字段)</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">set</code>日期时间方法返回将指定字段设置为表达式返回值后的日期时间。
				</p>
				<p>
					该方法接受一个字符串常量字段名和一个返回整数值的表达式作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>
					该方法返回将字段设置为提供值后的新日期时间值。注意值遵循<code class="literal">Calendar</code>类语义：例如，<code class="literal">month</code>的值从零开始，最大为11(注意：对于<code class="literal">LocalDateTime</code>和<code class="literal">ZonedDateTime</code>，月份的范围是1到12)。
				</p>
				<p>以下示例输出将月份设置为4月(注意Calendar类中4月对应数字3)后的time-taken值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.set('month', 3) as timeTakenMonth from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-withdate"></a>12.3.11. WithDate</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">withDate</code>日期时间方法返回指定日期后的日期时间，保留时间字段。
				</p>
				<p>该方法接受三个表达式作为参数：年、月和日的表达式。</p>
				<p>
					该方法返回将日期字段设置为提供值后的新日期时间值。对于返回null的表达式，方法会忽略该字段。注意<code class="literal">Calendar</code>类语义：例如，<code class="literal">month</code>的值从零开始，最大为11。
				</p>
				<p>以下示例输出将日期设置为2002年5月30日后的time-taken值(注意Calendar类中5月对应数字4)：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.withDate(2002, 4, 30) as timeTakenDated from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-withmin"></a>12.3.12. WithMax</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">withMax</code>日期时间方法返回将字段设置为该字段最大值后的日期时间。
				</p>
				<p>
					该方法接受一个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>该方法返回将特定日期字段设置为最大值后的新日期时间值。</p>
				<p>以下示例输出将秒部分设置为59秒后的time-taken属性值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.withMax('sec') as timeTakenMaxSec from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-withmax"></a>12.3.13. WithMin</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">withMin</code>日期时间方法返回将字段设置为该字段最小值后的日期时间。
				</p>
				<p>
					该方法接受一个字符串常量字段名作为参数。请参阅<a class="xref" href="epl_clauses.html#epl-syntax-time-periods" title="5.2.1. 指定时间段">第5.2.1节"指定时间段"</a>获取识别的关键字列表(不区分大小写)。
				</p>
				<p>该方法返回将特定日期字段设置为最小值后的新日期时间值。</p>
				<p>以下示例输出将秒部分设置为0秒后的time-taken属性值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.withMin('sec') as timeTakenMaxSec from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-withtime"></a>12.3.14. WithTime</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">withTime</code>日期时间方法返回指定时间后的日期时间，保留日期字段。
				</p>
				<p>该方法接受四个表达式作为参数：时、分、秒和毫秒的表达式。</p>
				<p>该方法返回将时间字段设置为提供值后的新日期时间值。对于返回null的表达式，方法会忽略该字段。</p>
				<p>以下示例输出将时间设置为上午9点后的time-taken值：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.withTime(9, 0, 0, 0) as timeTakenDated from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-tocal"></a>12.3.15. ToCalendar</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">toCalendar</code>日期时间方法返回该日期时间值的<code class="literal">Calendar</code>对象。
				</p>
				<p>该方法不接受参数。</p>
				<p>
					以下示例输出time-taken作为<code class="literal">Calendar</code>对象：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.toCalendar() as timeTakenCal from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-todate"></a>12.3.16. ToDate</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">toDate</code>日期时间方法返回该日期时间值的<code class="literal">Date</code>对象。
				</p>
				<p>该方法不接受参数。</p>
				<p>
					以下示例输出time-taken作为<code class="literal">Date</code>对象：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.toDate() as timeTakenDate from RFIDEvent</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-tomsec"></a>12.3.17. ToMillisec</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">toMillisec</code>日期时间方法返回该日期时间值的长整型毫秒值。
				</p>
				<p>该方法不接受参数。</p>
				<p>
					以下示例输出time-taken作为长整型<code class="literal">毫秒</code>值：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select timeTaken.toMillisec() as timeTakenLong from RFIDEvent</pre>
			</div>
		</div>
		<div class="sect1" lang="zh-CN">
			<div class="titlepage">
				<div>
					<div>
						<h2 class="title"><a id="datetime-method-intervalref"></a>12.4. 区间代数参考</h2>
					</div>
				</div>
			</div>
			<p>区间代数方法比较事件的开始和结束时间戳或一般时间戳。</p>
			<p>
				当表达式输入仅为时间戳值(如长整型值或<code class="literal">Date</code>或<code class="literal">Calendar</code>对象)时，该值表示的开始和结束时间戳是相同的时间戳值。
			</p>
			<p>当表达式输入为事件流别名时，编译器确定流的类型。如果事件类型声明了开始时间戳属性名，编译器使用该开始时间戳属性确定事件的开始时间戳。如果事件类型还声明了结束时间戳属性名，编译器使用该结束时间戳属性确定事件的结束时间戳(即有持续时间的事件)。如果未声明结束时间戳属性名，则每个事件的开始和结束时间戳相同，事件被视为零持续时间(即点时间事件)。</p>
			<p>
				区间代数方法都返回<code class="literal">Boolean</code>类型值。当输入值的开始时间戳为null，或结束时间戳(如果为事件类型声明)为null，或第一个参数的开始时间戳和结束时间戳(如果为事件类型声明)值为null时，结果值为null。
			</p>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-examples"></a>12.4.1. 示例</h3>
						</div>
					</div>
				</div>
				<p>
					本节中的示例简单地使用<code class="literal">A</code>和<code class="literal">B</code>作为事件类型名称。别名<code class="literal">a</code>用于表示<code class="literal">A</code>类型事件，别名<code class="literal">b</code>表示<code class="literal">B</code>类型事件。
				</p>
				<p>
					类型<code class="literal">A</code>和<code class="literal">B</code>的<code class="literal">create-schema</code>如下所示。两种类型声明相同。示例声明提供开始时间戳值的属性为<code class="literal">startts</code>，提供结束时间戳值的属性为<code class="literal">endts</code>：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">create schema A as (startts long, endts long) starttimestamp 'startts' endtimestamp 'endts'</pre>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">create schema B as (startts long, endts long) starttimestamp 'startts' endtimestamp 'endts'</pre>
				<p>
					下面的示例EPL连接最后一个A和最后一个B事件。它检测A-B事件组合，当比较时间戳时，最后一个A事件发生在最后一个B事件之前。示例使用<code class="literal">before</code>方法：
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.before(b)</pre>
				<p>
					为简单起见，本节中的示例将<code class="literal">A</code>和别名<code class="literal">a</code>称为输入事件。示例将<code class="literal">B</code>和别名<code class="literal">b</code>称为参数事件。
				</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-parameters"></a>12.4.2. 区间代数参数</h3>
						</div>
					</div>
				</div>
				<p>每个区间代数方法的第一个参数是要比较的事件或时间戳。</p>
				<p>区间代数方法的所有剩余参数都是区间，可以是以下任何一种：</p>
				<div xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="orderedlist">
					<ol>
						<li>
							<p>
								常量、事件属性或更一般地返回数值(秒数)的任何表达式。例如，在表达式<code class="literal">a.before(b, 2)</code>中，参数2被解释为2秒。表达式<code class="literal">a.before(b, myIntervalProperty)</code>被解释为<code class="literal">myIntervalProperty</code>秒。
							</p>
						</li>
						<li>
							<p>
								如<a class="xref" href="datetimereference.html#datetime-method-includes" title="12.4.11. Includes">第12.4.11节"Includes"</a>中描述的时间段表达式。例如：<code class="literal">a.before(b, 1小时2分钟)</code>。
							</p>
						</li>
					</ol>
				</div>
				<p>当提供的区间参数为null时，方法结果值为null。</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-performance"></a>12.4.3. 性能</h3>
						</div>
					</div>
				</div>
				<p>
					编译器分析where子句中的区间代数方法以及<code class="literal">between</code>日期时间方法，并为连接和子查询的执行构建查询计划。查询计划可以包括使用表达式计算或事件提供的开始和结束时间戳(如适用)的哈希和B树索引查找。考虑启用查询计划日志记录以获取有关所用查询计划的信息。
				</p>
				<p>当没有向区间代数方法提供额外的阈值或范围时，查询规划通常最有效，因为查询规划器可能不考虑它无法规划的区间代数方法。</p>
				<p>如果事件或表达式返回不同类型的日期表示，查询规划器也可能无法最优地规划查询执行。如果所有日期表示都使用相同的long、Date或Calendar类型，查询规划效果最佳。</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-limitations"></a>12.4.4. 限制</h3>
						</div>
					</div>
				</div>
				<p>
					更改日期或时间字段的日期时间方法，如<code class="literal">withTime</code>、<code class="literal">withDate</code>、<code class="literal">set</code>或<code class="literal">round</code>方法，将结束时间戳设置为开始时间戳。
				</p>
				<p>
					例如，在以下表达式中，<code class="literal">after</code>方法的参数持续时间为零，而不是事件B的<code class="literal">endts</code>属性提供的结束时间戳。
				</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">a.after(b.withTime(9, 0, 0, 0))</pre>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-after"></a>12.4.5. After</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">after</code>日期时间方法返回true如果一个事件发生在另一个事件之后，或一个时间戳在另一个时间戳之后。
				</p>
				<p>该方法比较输入值的开始时间戳(a.startTimestamp)与第一个参数的结束时间戳(b.endTimestamp)，以确定A是否发生在B之后。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.after(b)</code>中，如果A开始于B结束后，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.after(b)
// 上述匹配当：
//   a.startTimestamp - b.endTimestamp > 0</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.after(b, 5秒)</code>中，如果A开始于B结束后至少5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.after(b, 5秒)
// 上述匹配当：
//   a.startTimestamp - b.endTimestamp >= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.after(b, 5秒, 10秒)</code>中，如果A开始于B结束后至少5秒但不超过10秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.after(b, 5秒, 10秒)
// 上述匹配当：
//   5秒 <= a.startTimestamp - b.endTimestamp <= 10秒</pre>
				<p>
					允许范围的负值。例如在<code class="literal">a.after(b, -5秒, -10秒)</code>中，如果A开始于B结束前至少5秒但不超过10秒，则方法返回true。
				</p>
				<p>
					如果范围低端点大于范围高端点，编译器会自动反转它们。因此<code class="literal">a.after(b, 10秒, 5秒)</code>与<code class="literal">a.after(b, 5秒, 10秒)</code>具有相同的语义。
				</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-before"></a>12.4.6. Before</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">before</code>日期时间方法返回true如果一个事件发生在另一个事件之前，或一个时间戳在另一个时间戳之前。
				</p>
				<p>该方法比较输入值的结束时间戳(a.endTimestamp)和第一个参数的开始时间戳(b.startTimestamp)，以确定A是否发生在B之前。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.before(b)</code>中，如果A结束于B开始前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.before(b)
// 上述匹配当：
//   b.startTimestamp - a.endTimestamp > 0</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.before(b, 5秒)</code>中，如果A结束于B开始前至少5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.before(b, 5秒)
// 上述匹配当：
//   b.startTimestamp - a.endTimestamp >= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.before(b, 5秒, 10秒)</code>中，如果A结束于B开始前至少5秒但不超过10秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.before(b, 5秒, 10秒)
// 上述匹配当：
//   5秒 <= b.startTimestamp - a.endTimestamp <= 10秒</pre>
				<p>
					允许范围的负值。例如在<code class="literal">a.before(b, -5秒, -10秒)</code>中，如果A开始于B开始后至少5秒但不超过10秒，则方法返回true。
				</p>
				<p>
					如果范围低端点大于范围高端点，编译器会自动反转它们。因此<code class="literal">a.before(b, 10秒, 5秒)</code>与<code class="literal">a.before(b, 5秒, 10秒)</code>具有相同的语义。
				</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-coincides"></a>12.4.7. Coincides</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">coincides</code>日期时间方法返回true如果一个事件和另一个事件同时发生，或两个时间戳值相同。
				</p>
				<p>该方法比较输入值的开始和结束时间戳与第一个参数的开始和结束时间戳，确定它们是否相等。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.coincides(b)</code>中，如果A和B的开始时间戳相同且A和B的结束时间戳也相同，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.coincides(b)
// 上述匹配当：
//   a.startTimestamp = b.startTimestamp 且 a.endTimestamp = b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.coincides(b, 5秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒且A和B的结束时间戳差异也等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.coincides(b, 5秒)
// 上述匹配当：
//   abs(a.startTimestamp - b.startTimestamp) <= 5秒 且 
//   abs(a.endTimestamp - b.endTimestamp) <= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.coincides(b, 5秒, 10秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒且A和B的结束时间戳差异等于或小于10秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.coincides(b, 5秒, 10秒)
// 上述匹配当：
//   abs(a.startTimestamp - b.startTimestamp) <= 5秒 且 
//   abs(a.endTimestamp - b.endTimestamp) <= 10秒</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>
			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-during"></a>12.4.8. During</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">during</code>日期时间方法返回true如果一个事件发生在另一个事件期间，或时间戳落在某个事件发生期间。
				</p>
				<p>
					该方法判断输入值的开始和结束时间戳是否在第一个参数的开始和结束时间戳期间。对称相反的方法是<a class="xref" href="datetimereference.html#datetime-method-includes" title="12.4.11. Includes">第12.4.11节"Includes"</a>。
				</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.during(b)</code>中，如果A的开始时间戳在B的开始时间戳之后且A的结束时间戳在B的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.during(b)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp &lt;= a.endTimestamp &lt; b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.during(b, 5秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒且A和B的结束时间戳差异也等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.during(b, 5秒)
// 上述匹配当：
//   0 &lt; a.startTimestamp - b.startTimestamp &lt;= 5秒 且 
//   0 &lt; a.endTimestamp - b.endTimestamp &lt;= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.during(b, 5秒, 10秒)</code>中，如果A和B的开始时间戳差异以及A和B的结束时间戳差异在5到10秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.during(b, 5秒, 10秒)
// 上述匹配当：
//   5秒 &lt;= a.startTimestamp - b.startTimestamp &lt;= 10秒 且 
//   5秒 &lt;= a.endTimestamp - b.endTimestamp &lt;= 10秒</pre>
				<p>
					如果提供五个参数，例如在<code class="literal">a.during(b, 5秒, 10秒, 20秒, 30秒)</code>中，如果A和B的开始时间戳差异在5到10秒之间且A和B的结束时间戳差异在20到30秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b
  where a.during(b, 5秒, 10秒, 20秒, 30秒)
// 上述匹配当：
//   5秒 &lt;= a.startTimestamp - b.startTimestamp &lt;= 10秒 且 
//   20秒 &lt; a.endTimestamp - b.endTimestamp &lt;= 30秒</pre>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-finishes"></a>12.4.9. Finishes</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">finishes</code>日期时间方法返回true如果一个事件在另一个事件开始后开始且该事件与另一个事件同时结束。
				</p>
				<p>
					该方法判断输入值的开始时间戳是否在第一个参数的开始时间戳之后且输入值的结束时间戳与第一个参数的结束时间戳相同。对称相反的方法是<a class="xref" href="datetimereference.html#datetime-method-finishedby" title="12.4.10. Finished By">第12.4.10节"Finished By"</a>。
				</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.finishes(b)</code>中，如果A的开始时间戳在B的开始时间戳之后且A和B的结束时间戳相同，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.finishes(b)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp 且 a.endTimestamp = b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.finishes(b, 5秒)</code>中，如果A的开始时间戳在B的开始时间戳之后且A和B的结束时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.finishes(b, 5秒)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp 且 
//   abs(a.endTimestamp - b.endTimestamp ) &lt;= 5秒</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-finishedby"></a>12.4.10. Finished By</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">finishedBy</code>日期时间方法返回true如果一个事件在另一个事件开始前开始且该事件与另一个事件同时结束。
				</p>
				<p>
					该方法判断输入值的开始时间戳是否在第一个参数的开始时间戳之前且输入值的结束时间戳与第一个参数的结束时间戳相同。对称相反的方法是<a class="xref" href="datetimereference.html#datetime-method-finishes" title="12.4.9. Finishes">第12.4.9节"Finishes"</a>。
				</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.finishedBy(b)</code>中，如果A的开始时间戳在B的开始时间戳之前且A和B的结束时间戳相同，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.finishedBy(b)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp 且 a.endTimestamp = b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.finishedBy(b, 5秒)</code>中，如果A的开始时间戳在B的开始时间戳之前且A和B的结束时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.finishedBy(b, 5秒)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp 且 
//   abs(a.endTimestamp - b.endTimestamp ) &lt;= 5秒</pre>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-includes"></a>12.4.11. Includes</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">includes</code>日期时间方法返回true如果参数事件发生在输入事件期间，或时间戳落在某个事件发生期间。
				</p>
				<p>
					该方法判断第一个参数的开始和结束时间戳是否在输入值的开始和结束时间戳期间。对称相反的方法是<a class="xref" href="datetimereference.html#datetime-method-during" title="12.4.8. During">第12.4.8节"During"</a>。
				</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.includes(b)</code>中，如果B的开始时间戳在A的开始时间戳之后且B的结束时间戳在A的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.includes(b)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp &lt;= b.endTimestamp &lt; a.endTimestamp </pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.includes(b, 5秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒且A和B的结束时间戳差异也等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.includes(b, 5秒)
// 上述匹配当：
//   0 &lt; b.startTimestamp - a.startTimestamp &lt;= 5秒 且 
//   0 &lt; a.endTimestamp - b.endTimestamp &lt;= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.includes(b, 5秒, 10秒)</code>中，如果A和B的开始时间戳差异以及A和B的结束时间戳差异在5到10秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.includes(b, 5秒, 10秒)
// 上述匹配当：
//   5秒 &lt;= a.startTimestamp - b.startTimestamp &lt;= 10秒 且 
//   5秒 &lt;= a.endTimestamp - b.endTimestamp &lt;= 10秒</pre>
				<p>
					如果提供五个参数，例如在<code class="literal">a.includes(b, 5秒, 10秒, 20秒, 30秒)</code>中，如果A和B的开始时间戳差异在5到10秒之间且A和B的结束时间戳差异在20到30秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b
  where a.includes(b, 5秒, 10秒, 20秒, 30秒)
// 上述匹配当：
//   5秒 &lt;= a.startTimestamp - b.startTimestamp &lt;= 10秒 且 
//   20秒 &lt;= a.endTimestamp - b.endTimestamp &lt;= 30秒</pre>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-meets"></a>12.4.12. Meets</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">meets</code>日期时间方法返回true如果事件的结束时间与另一个事件的开始时间相同。
				</p>
				<p>该方法比较输入值的结束时间戳和第一个参数的开始时间戳，判断它们是否相同。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.meets(b)</code>中，如果A的结束时间戳与B的开始时间戳相同，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.meets(b)
// 上述匹配当：
//   a.endTimestamp = b.startTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.meets(b, 5秒)</code>中，如果A的结束时间戳与B的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.meets(b, 5秒)
// 上述匹配当：
//   abs(b.startTimestamp - a.endTimestamp) &lt;= 5秒</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-metby"></a>12.4.13. Met By</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">metBy</code>日期时间方法返回true如果事件的开始时间与另一个事件的结束时间相同。
				</p>
				<p>该方法比较输入值的开始时间戳和第一个参数的结束时间戳，判断它们是否相同。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.metBy(b)</code>中，如果A的开始时间戳与B的结束时间戳相同，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.metBy(b)
// 上述匹配当：
//   a.startTimestamp = b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.metBy(b, 5秒)</code>中，如果B的结束时间戳与A的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.metBy(b, 5秒)
// 上述匹配当：
//   abs(a.startTimestamp - b.endTimestamp) &lt;= 5秒</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-overlaps"></a>12.4.14. Overlaps</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">overlaps</code>日期时间方法返回true如果一个事件在另一个事件开始前开始且在另一个事件开始后结束，但在另一个事件结束前结束(事件有重叠时间段)。
				</p>
				<p>该方法判断输入值的开始和结束时间戳是否与第一个参数的开始和结束时间戳重叠，即A在B开始前开始且A在B开始后但在B结束前结束。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.overlaps(b)</code>中，如果A的开始时间戳在B的开始时间戳之前且A的结束时间戳在B的开始时间戳之后但在B的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlaps(b)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp &lt; a.endTimestamp &lt; b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.overlaps(b, 5秒)</code>中，如果此外A的结束时间戳与B的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlaps(b, 5秒)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp &lt; a.endTimestamp &lt; b.endTimestamp 且 
//   0 &lt;= a.endTimestamp - b.startTimestamp &lt;= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.overlaps(b, 5秒, 10秒)</code>中，如果此外A的结束时间戳与B的开始时间戳差异在5到10秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlaps(b, 5秒, 10秒)
// 上述匹配当：
//   a.startTimestamp &lt; b.startTimestamp &lt; a.endTimestamp &lt; b.endTimestamp 且 
//   5秒 &lt;= a.endTimestamp - b.startTimestamp &lt;= 10秒</pre>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-overlappedby"></a>12.4.15. Overlapped By</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">overlappedBy</code>日期时间方法返回true如果参数事件在输入事件开始前开始且参数事件在输入事件开始后结束，但在输入事件结束前结束(事件有重叠时间段)。
				</p>
				<p>该方法判断输入值的开始和结束时间戳是否与第一个参数的开始和结束时间戳重叠，即B在A开始前开始且B在A开始后但在A结束前结束。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.overlappedBy(b)</code>中，如果B的开始时间戳在A的开始时间戳之前且B的结束时间戳在A的开始时间戳之后但在A的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlappedBy(b)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp &lt; b.endTimestamp &lt; a.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.overlappedBy(b, 5秒)</code>中，如果此外B的结束时间戳与A的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlappedBy(b, 5秒)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp &lt; b.endTimestamp &lt; a.endTimestamp 且 
//   0 &lt;= b.endTimestamp - a.startTimestamp &lt;= 5秒</pre>
				<p>
					如果提供三个参数，例如在<code class="literal">a.overlappedBy(b, 5秒, 10秒)</code>中，如果此外B的结束时间戳与A的开始时间戳差异在5到10秒之间，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.overlappedBy(b, 5秒, 10秒)
// 上述匹配当：
//   b.startTimestamp &lt; a.startTimestamp &lt; b.endTimestamp &lt; a.endTimestamp 且 
//   5秒 &lt;= b.endTimestamp - a.startTimestamp &lt;= 10秒</pre>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-starts"></a>12.4.16. Starts</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">starts</code>日期时间方法返回true如果一个事件和另一个事件同时开始且该事件的结束发生在另一个事件结束之前。
				</p>
				<p>该方法判断输入值和第一个参数的开始时间戳是否相同且输入值的结束时间戳在第一个参数的结束时间戳之前。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.starts(b)</code>中，如果A和B的开始时间戳相同且A的结束时间戳在B的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.starts(b)
// 上述匹配当：
//   a.startTimestamp = b.startTimestamp 且 a.endTimestamp &lt; b.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.starts(b, 5秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.starts(b, 5秒)
// 上述匹配当：
//   abs(a.startTimestamp - b.startTimestamp) &lt;= 5秒 且 
//   a.endTimestamp &lt; b.endTimestamp</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>

			<div class="sect2" lang="zh-CN">
				<div class="titlepage">
					<div>
						<div>
							<h3 class="title"><a id="datetime-method-startedby"></a>12.4.17. Started By</h3>
						</div>
					</div>
				</div>
				<p>
					<code class="literal">startedBy</code>日期时间方法返回true如果一个事件和另一个事件同时开始且另一个事件的结束发生在输入事件结束之前。
				</p>
				<p>该方法判断输入值和第一个参数的开始时间戳是否相同且第一个参数的结束时间戳在输入值的结束时间戳之前。</p>
				<p>
					如果使用一个参数，例如在<code class="literal">a.startedBy(b)</code>中，如果A和B的开始时间戳相同且B的结束时间戳在A的结束时间戳之前，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.startedBy(b)
// 上述匹配当：
//   a.startTimestamp = b.startTimestamp 且 b.endTimestamp &lt; a.endTimestamp</pre>
				<p>
					如果提供两个参数，例如在<code class="literal">a.startedBy(b, 5秒)</code>中，如果A和B的开始时间戳差异等于或小于5秒，则方法返回true。
				</p>
				<p>示例EPL：</p>
				<pre xmlns="" xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" class="">select * from A#lastevent as a, B#lastevent as b where a.startedBy(b, 5秒)
// 上述匹配当：
//   abs(a.startTimestamp - b.startTimestamp) &lt;= 5秒 且 
//    b.endTimestamp &lt; a.endTimestamp</pre>
				<p>不允许区间参数为负值。如果您的区间参数本身是返回负值的表达式，运行时将记录警告消息并返回null。</p>
			</div>
		</div>
	</div>
	<ul xmlns:d="http://docbook.org/ns/docbook" class="docnav">
		<li class="previous"><a accesskey="p" href="enumerationreference.html"><strong>上一章</strong>第11章 EPL参考：枚举方法</a></li>
		<li class="up"><a accesskey="u" href="#"><strong>返回顶部</strong></a></li>
		<li class="home"><a accesskey="h" href="index.html"><strong>首页</strong></a></li>
		<li class="next"><a accesskey="n" href="aggmethodreference.html"><strong>下一章</strong>第13章 EPL参考：聚合方法</a></li>
	</ul>
</body>

</html>